; 树形递归实现
(define (f n)
  (cond ((< n 3) n)
        (else (+ (f (- n 1))
                (* 2 (f (- n 2)))
                (* 3 (f (- n 3)))))))

; 迭代实现
(define (f n)
  (if (< n 3) n
    (f-iter 2 1 0 (- n 2))))

(define (f-iter a b c count)
  (if (= count 0) a
      (f-iter (+ a (* b 2) (* c 3)) a b (- count 1))))
